[% setvar title The Perl 6 summary for the week ending 2005-06-07 %]
<div id="archive-notice">
    <h3>This file is part of the Perl 6 Archive</h3>
    <p>To see what is currently happening visit <a href="http://www.perl6.org/">http://www.perl6.org/</a></p>
</div>
<div class='pod'>
<a name='The Perl 6 summary for the week ending 2005-06-07'></a><h1>The Perl 6 summary for the week ending 2005-06-07</h1>
<p>Crumbs. I've remembered to write the summary this week. Now if I can just
remember to bill O'Reilly for, err, 2003's summaries. Heck, it's not like
waiting for the dollar to get stronger has paid off.</p>
<p>Ah well, no use crying over spilt milk. On with the show. Maybe, just maybe,
darwinports will work its magic and I'll have a working Haskell compiler by the
time I've finished writing.</p>
<a name='This week in perl6-compiler'></a><h1>This week in perl6-compiler</h1>
<a name='Undef issues'></a><h2>Undef issues</h2>
<p>I'd probably forgotten this, but Larry pointed out that, in Perl 6 there would
no longer be a function <code>undef()</code> and a value <code>undef</code>. Instead there'd be a
function <code>undefine()</code> and a value <code>undef</code>. But he thought that we should
usually <code>fail()</code> to construct our undefined values.</p>
<p><a href='http://groups.google.com/groups?threadm=20050601002444.GB32060@wall.org' target='_blank'>groups.google.com</a></p>
<a name='This week in perl6-internals'></a><h1>This week in perl6-internals</h1>
<a name='Keys'></a><h2>Keys</h2>
<p>I'm not sure I understood what TOGoS was driving at with a suggestion about keys
and properties. Luckily Leo, Dan and Chip all seemed to. The discussion
continued through the week.</p>
<p><a href='http://groups.google.com/groups?threadm=20050601021042.22209.qmail@web32914.mail.mud.yahoo.com' target='_blank'>groups.google.com</a></p>
<a name='Loop Improvements'></a><h2>Loop Improvements</h2>
<p>Oh no! It's the register allocator problems again. One of these days I swear
I'm going to swot up on this stuff properly, work out whether it's really the
case that full continuations break any conceivable register allocator and
summarize all the issues for everyone in a nice white paper/summary.</p>
<p><a href='http://groups.google.com/groups?threadm=45ec99fc050531202812aa4da9@mail.gmail.com' target='_blank'>groups.google.com</a></p>
<a name='HP-UX build notes'></a><h2>HP-UX build notes</h2>
<p>Nick Glencross posted some of his issues with getting parrot up on an HP-UX
machine. After a good deal of discussion and tool chain fettling he got things
building and posted a patch to fix the knowledge which was promptly applied
(r8280 for those of you with the svn chops to know how to take advantage of
that).</p>
<p><a href='http://groups.google.com/groups?threadm=20050601114223.30367.qmail@lists.develooper.com' target='_blank'>groups.google.com</a></p>
<a name='mod_pugs status'></a><h2>mod_pugs status</h2>
<p>Jeff Horwitz announced that mod_parrot now comes bundled with mod_pugs, which
means that you can now write Apache extensions in Perl 6. I don't know about
you, but my mind is still boggling.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.44.0506011358160.20203-100000@booger.sixgeeks.org' target='_blank'>groups.google.com</a></p>
<a name='Parrot 0.2.1'></a><h2>Parrot 0.2.1</h2>
<p>Parrot spent most of the week in a feature freeze for the release of Parrot
0.2.1 &quot;APW&quot; which went ahead as planned on the 4th of June.</p>
<p><a href='http://groups.google.com/groups?threadm=42A18449.3060709@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Parrot on Solaris'></a><h2>Parrot on Solaris</h2>
<p>Peter Sinnott reported problems with Parrot on Solaris. It turns out that
different implementations of <code>atan</code> behave slightly differently, which isn't
good. I believe the problem remains unresolved.</p>
<p><a href='http://groups.google.com/groups?threadm=8C73533BEA34422-BD4-27EB1@mblk-r28.sysops.aol.com' target='_blank'>groups.google.com</a></p>
<a name='Parrot on Mac OS'></a><h2>Parrot on Mac OS</h2>
<p>Joshua Juran's questions about getting Parrot running on MacOS Classic were
Warnocked.</p>
<p><a href='http://groups.google.com/groups?threadm=ffcb1edd23308e83c738cd420c94e7c1@gmail.com' target='_blank'>groups.google.com</a></p>
<a name='Parrot tests get TODO'></a><h2>Parrot tests get TODO</h2>
<p>Continuing the drive for consistent testing structures everywhere in Perl
land, chromatic applied a patch to Parrot::Test which makes TODO tests work in
a way that Test::Builder understands. Hurrah!</p>
<p><a href='http://groups.google.com/groups?threadm=1117736102.12568.25.camel@localhost' target='_blank'>groups.google.com</a></p>
<a name='Missing MMD default functions'></a><h2>Missing MMD default functions</h2>
<p>Dan was somewhat bemused to find that the MMD functions' defaults had
disappeared when he did a sync with subversion. He wondered whether this was
deliberate. Turns out that it was. I'm not sure whether Chip's ruled that it
was Right though.</p>
<p><a href='http://groups.google.com/groups?threadm=a06210200bec56c538a32@' target='_blank'>groups.google.com</a>[192.168.0.8]</p>
<a name='Google's Summer of Code 2005'></a><h2>Google's Summer of Code 2005</h2>
<p>Remember earlier when I talked about IMCC's register allocation? Well Dheeraj
Khumar Arora is looking at working on improving IMCC's optimizations as part of
Google's summer of code 2005. The usual thread ensued.</p>
<p><a href='http://groups.google.com/groups?threadm=bbfd0f3e0506030500752b4585@mail.gmail.com' target='_blank'>groups.google.com</a></p>
<a name='Building nci/dynclasses on HP-UX'></a><h2>Building <b><i>nci/dynclasses</i></b> on HP-UX</h2>
<p>Not content with getting Parrot to build on HP-UX, Nick Glencross next set his
sights on getting <b><i>nci/dynclasses</i></b> working on HP-UX. It sounds like there'll
be a patch forthcoming some time next week.</p>
<p><a href='http://groups.google.com/groups?threadm=20050603120906.10247.qmail@lists.develooper.com' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?threadm=20050605160218.31074.qmail@lists.develooper.com' target='_blank'>groups.google.com</a> -- Nick paints the big HP-UX
picture</p>
<a name='Announcing amber for parrot 0.2.1'></a><h2>Announcing amber for parrot 0.2.1</h2>
<p>Roger Browne announced another new language that targets Parrot. It's called
amber, and it borrows a good deal of syntax and semantics from Eiffel with a
large sprinkling of Ruby for good measure.</p>
<p><a href='http://xamber.org/' target='_blank'>xamber.org</a> -- the Amber website</p>
<p><a href='http://groups.google.com/groups?threadm=1118002708.9863.14.camel@eden' target='_blank'>groups.google.com</a></p>
<a name='A note WRT exception handlers'></a><h2>A note WRT exception handlers</h2>
<p>Leo posted a quick discussion of the correct use of exception handlers in
Parrot. Essentially, the rule is, your exception handler should jump back to
the point just after the exception handler block:</p>
<pre>        push_eh except_N
          # Code that might fail
        clear_eh
    resume_N:
        ...
    except_N:
        ...
	goto resume_N</pre>
<p>Easy eh?</p>
<p><a href='http://groups.google.com/groups?threadm=42A3F803.6040406@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Meanwhile in perl6-language'></a><h1>Meanwhile in perl6-language</h1>
<a name='The reduce metaoperator thread'></a><h2>The reduce metaoperator thread</h2>
<p>Remember when I discussed this thread two weeks ago? It's still going strong.</p>
<p>Larry ended up stating that there will be an optional property <code>identval</code> on
operators which will be set by default on all operators with obvious identity
values. Or it might be called <code>initvalue</code>.</p>
<p><a href='http://groups.google.com/groups?threadm=429DBDB5.70404@orthogon.com' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?threadm=20050607150810.GA24920@wall.org' target='_blank'>groups.google.com</a> -- Larry makes up his mind</p>
<a name='Construction clarification'></a><h2>Construction clarification</h2>
<p>Carl Franks wondered about how object constructors would work. It turned out
that the code he'd carefully written by hand pretty much described the default
behaviour. Damian and Larry provided details. Hopefully some keen p6porter has
already incorporated any new information into the appropriate synopses.</p>
<p><a href='http://groups.google.com/groups?threadm=4f352aae0505300900514e3922@mail.gmail.com' target='_blank'>groups.google.com</a></p>
<a name='A comprehensive list of perl6 rule tokens'></a><h2>A comprehensive list of perl6 rule tokens</h2>
<p>Patrick responded to his own post last week to clarify some things about
the capturing behaviour of various rule types. He, japhy and Thomas Sandlaß
thrashed out the gory details.</p>
<p><a href='http://groups.google.com/groups?threadm=20050531231709.GC26658@pmichaud.com' target='_blank'>groups.google.com</a></p>
<a name='Default invocant of methods'></a><h2>Default invocant of methods</h2>
<p>Larry addressed Ingo Blechschmidt's questions about class methods.</p>
<p>Class is a role? My head hurts.</p>
<p><a href='http://groups.google.com/groups?threadm=20050531235349.GG24474@wall.org' target='_blank'>groups.google.com</a></p>
<a name='returns and context'></a><h2><code>returns</code> and context</h2>
<p>Gaals Yahas wondered how to specify the signature of a context-sensitive
function. The consensus seems to be to use a junction, like so:</p>
<pre>   sub foo() returns Str|Int {...}</pre>
<p><a href='http://groups.google.com/groups?threadm=20050601002458.GT14133@sike.forum2.org' target='_blank'>groups.google.com</a></p>
<a name='Declarations of constants'></a><h2>Declarations of constants</h2>
<p>Adam Kennedy had wondered how much compile time optimization of constants would
happen. Damian thought not as much as Adam thought, but you could use macros to
get more optimization if you needed it.</p>
<p><a href='http://groups.google.com/groups?threadm=429D01F0.8020500@conway.org' target='_blank'>groups.google.com</a></p>
<a name='Time functions'></a><h2>Time functions</h2>
<p>The good thing about <code>localtime</code> et al is that everyone knows them. The bad
thing about them is that they're at such a low level that you either end up
reinventing wheels, getting it wrong or boggling at the size of the library you
need to install to get access to good Time manipulation. I wonder what Perl 6
will end up with.</p>
<p><a href='http://groups.google.com/groups?threadm=429D2EC1.1020204@vilain.net' target='_blank'>groups.google.com</a></p>
<a name='Empty Hash'></a><h2>Empty Hash</h2>
<p>Luke wondered if <code>{}</code> should be an empty hash rather than empty code, and why
<code>{ %hash }</code> no longer makes a shallow copy of hash, but code that returns
<code>%hash</code>. There was some discussion, but no answers from anyone else on the
design team.</p>
<p><a href='http://groups.google.com/groups?threadm=7ca3f01605060101201df62d62@mail.gmail.com' target='_blank'>groups.google.com</a></p>
<a name='chars in a list context'></a><h2><code>chars</code> in a list context</h2>
<p>Joshua Gatcomb revisited a long Warnocked subject. He wants</p>
<pre>    @chars = 'hello'.chars; # &lt;h e l l o&gt;

 ie. In a list context, C&lt;chars&gt; should return a list of the characters in the
 string. Stuart Cook thought it was a good idea. </pre>
<p><a href='http://groups.google.com/groups?threadm=941eab8405060207597620d865@mail.gmail.com' target='_blank'>groups.google.com</a></p>
<a name='Transparent / Opaque references'></a><h2>Transparent / Opaque references</h2>
<p>Um... I'm not sure what Thomas Sandlaß and Juerd were talking about. I'll tell
you what, let's swap places: you read the thread and write me a summary of it.</p>
<p><a href='http://groups.google.com/groups?threadm=429F51BA.4000404@orthogon.com' target='_blank'>groups.google.com</a></p>
<a name='Idea for making @, % and $ optional'></a><h2>Idea for making @, % and $ optional</h2>
<p>Millsa Erlas wondered if it would be possible to make variable sigils
optional. Short answer: yes, with a pragma, and probably left for CP6AN.</p>
<p><a href='http://groups.google.com/groups?threadm=20050602222319.27465.qmail@lists.develooper.com' target='_blank'>groups.google.com</a></p>
<a name='Using rules'></a><h2>Using rules</h2>
<p>BÁRTHAZI András wondered about using rules in web templating system he was
working on. Aankhen supplied an answer.</p>
<p>(Look, it's two messages, any summary I wrote that told you more than the above
sentence would be about as long as the original messages.)</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.61.0506031015310.15410@wish.hu' target='_blank'>groups.google.com</a></p>
<a name='(multi)subroutine names'></a><h2>(multi)subroutine names</h2>
<p>Dakkar wondered how he could get at the long name of a multi sub. Rod Adams
thought it'd be:</p>
<pre>    &amp;foo&lt;Array, Int&gt;
    &amp;foo&lt;Hash, Int&gt;</pre>
<p>but also thought it might have been changed. Thomas Sandlaß agreed that it had
changed to:</p>
<pre>    &amp;foo:(Array, Int)
    &amp;foo:(Hash, Int)</pre>
<p>Easy.</p>
<p><a href='http://groups.google.com/groups?threadm=42A0E5AD.5040204@thenautilus.net' target='_blank'>groups.google.com</a></p>
<a name='Flattening arguments'></a><h2>Flattening arguments</h2>
<p>BÁRTHAZI András wondered about the behaviour of flattening arguments in Pugs
when compared to that described in Perl 6 and Parrot Essentials. Answer: The
book's right, they're just not implemented in Pugs. Yet.</p>
<p><a href='http://groups.google.com/groups?threadm=42A2FED3.7070501@barthazi.hu' target='_blank'>groups.google.com</a></p>
<a name='return() in pointy blocks'></a><h2><code>return()</code> in pointy blocks</h2>
<p>Oh boy. Ingo Blechschmidt opened a can of worms when he asked about return
within pointy subs. However, because the worms were slow getting started you'll
have to wait for Matt's summary next week when he explains:</p>
<pre>    sub callcc (Code $code) { $code(-&gt; $r {return $r}) }</pre>
<p><a href='http://groups.google.com/groups?threadm=loom.20050607T181425-823@post.gmane.org' target='_blank'>groups.google.com</a></p>
<a name='Meanwhile, in another place'></a><h1>Meanwhile, in another place</h1>
<p>Once upon a long time ago, Jon Orwant threw coffee cups and swore. And Perl 6
was born. Later that afternoon, Dan Sugalski started doodling design sketches
for what was to become Parrot. Parrot's first README in CVS dates from August
11th 2001 and the first mailing list post about it that's archived is from
August the 1st 2000, but that's a reply...</p>
<p>As well as being Parrot's original developer, Dan is also Parrot's first
commercial user.</p>
<p>Last week he announced in his blog that, having already given up his designer's
hat earlier this year, he's stopped doing any parrot development. The plan is
that he'll be publishing a few design documents and historical explanations of
various bits of Parrot design on his blog, but otherwise, that's all he wrote.</p>
<p>I'm not the first, and I'm sure I won't be the last to say this. Dan, thank you
very much for all the work you've put into Parrot over the years. Good luck
with whatever you do next.</p>
<p><a href='http://www.sidhe.org/~dan/blog/archives/000400.html' target='_blank'>www.sidhe.org</a></p>
<a name='The end... for now'></a><h1>The end... for now</h1>
<p>If you find these summaries useful or enjoyable, please consider
contributing to the Perl Foundation to help support the development of
Perl.</p>
<p><a href='http://donate.perl-foundation.org/' target='_blank'>donate.perl-foundation.org</a> -- The Perl Foundation</p>
<p><a href='http://dev.perl.org/perl6/' target='_blank'>dev.perl.org</a> -- Perl 6 Development site</p>
<p>Or, you can check out my website. Maybe now I'm back writing stuff I'll start
updating it.</p>
<p><a href='http://www.bofh.org.uk/' target='_blank'>www.bofh.org.uk</a></p>
<p>Vaguely pretty photos by me can be found at:</p>
<p><a href='http://www.flickr.com/photos/pdcawley' target='_blank'>www.flickr.com</a></p>
</div>
